跳到主要内容

20 DAC实验

20 DAC实验

DAC输出电压实验 DAC波形实验 扬声器实验

up视频里的实验代码: 👣DAC实验代码

DAC驱动文件: DAC驱动代码

播放生日快乐: 🥳DAC驱动扬声器播放生日快乐

注意
图片

如果盒子里面有这个小卡片的话 代表着up把SCL和SDA的丝印画反了 大家可以按照小卡片上的来

1 📢 蜂鸣器-DAC电压输出实验​

1.1 实验连接​

图片
注意
课程配图

如果盒子里面有这个小卡片的话 代表着up把SCL和SDA的丝印画反了 大家可以按照小卡片上的来

1.2 实验原理​

  • 通过IIC通信 设置外置DAC的输出值

1.3 CubeMX配置​

DAC实验I2C2配置
DAC实验通信参数

1.4 实验代码​

全局​

#include "dac.h"

main()​

DAC_SetDigital(0.7/3.3*4096);

while(1)​

2 〰️ DAC波形发生实验​

2.1 实验连接​

图片

2.2 实验原理​

  • 通过定时器触发 控制外置DAC输出正弦波形
  • sin函数里面的参数 是正弦函数的相位 使用的是弧度制
  • (0°360°)角度制 / 360 = (02π)弧度制 / 2π

2.3 CubeMX配置​

CubeMX配置
CubeMX配置
CubeMX配置

2.4 实验代码​

全局​

#include "dac.h"
#include "math.h"

#define PI 3.1415926535

uint8_t flag = 0;

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM2)
{
flag = 1;
}
}

main()​

HAL_TIM_Base_Start_IT(&htim2);

float idx = 0;
float step = 3.6;

while(1)里面​

if(flag == 1)
{
float phase = 2.0f*PI*(idx/360.0f);
uint16_t dac_val = 4095.0f*((sinf(phase)+1.0f)/2.0f);
DAC_SetDigital(dac_val);
idx += step;
flag = 0;
}